function debounce(fn, delay) {
    // 延迟执行
    // var timer = null;
    // return function () {
    //     var context = this;
    //     var args = arguments;
    //     if (timer) {
    //         clearTimeout(timer)
    //     }
    //     timer = setTimeout(function () {
    //         fn.apply(context, args);
    //         timer = null;
    //     }, delay);
    // }
    // 立即执行
    var timerId = null;
    var flag = true;
    return function () {
        var context = this 
        var args = arguments
        clearTimeout(timerId);
        if (flag) {
            fn.apply(context, args);
            flag = false
        }
        timerId = setTimeout(() => { flag = true }, delay)
    }
}
//节流
function throttle(fn, time) {
    let timer = null
    return function (...args) {
        if (timer) {
            return
        }
        const _this = this
        timer = setTimeout(() => {
            timer = null
        }, time)
        fn.apply(_this, args)
    }
}

export { debounce, throttle }